
// MIT License
// 
// Copyright (c) 2009-2017 Luca Piccioni
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// 
// This file is automatically generated

#pragma warning disable 649, 1572, 1573

// ReSharper disable RedundantUsingDirective
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;

using Khronos;

// ReSharper disable CheckNamespace
// ReSharper disable InconsistentNaming
// ReSharper disable JoinDeclarationAndInitializer

namespace OpenGL
{
	public partial class Gl
	{
		/// <summary>
		/// [GL] Value of GL_REGISTER_COMBINERS_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int REGISTER_COMBINERS_NV = 0x8522;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_A_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_A_NV = 0x8523;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_B_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_B_NV = 0x8524;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_C_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_C_NV = 0x8525;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_D_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_D_NV = 0x8526;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_E_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_E_NV = 0x8527;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_F_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_F_NV = 0x8528;

		/// <summary>
		/// [GL] Value of GL_VARIABLE_G_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int VARIABLE_G_NV = 0x8529;

		/// <summary>
		/// [GL] Value of GL_CONSTANT_COLOR0_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int CONSTANT_COLOR0_NV = 0x852A;

		/// <summary>
		/// [GL] Value of GL_CONSTANT_COLOR1_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int CONSTANT_COLOR1_NV = 0x852B;

		/// <summary>
		/// [GL] Value of GL_PRIMARY_COLOR_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_path_rendering", Api = "gl|glcore|gles2")]
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int PRIMARY_COLOR_NV = 0x852C;

		/// <summary>
		/// [GL] Value of GL_SECONDARY_COLOR_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_path_rendering", Api = "gl|glcore|gles2")]
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SECONDARY_COLOR_NV = 0x852D;

		/// <summary>
		/// [GL] Value of GL_SPARE0_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SPARE0_NV = 0x852E;

		/// <summary>
		/// [GL] Value of GL_SPARE1_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SPARE1_NV = 0x852F;

		/// <summary>
		/// [GL] Value of GL_DISCARD_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int DISCARD_NV = 0x8530;

		/// <summary>
		/// [GL] Value of GL_E_TIMES_F_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int E_TIMES_F_NV = 0x8531;

		/// <summary>
		/// [GL] Value of GL_SPARE0_PLUS_SECONDARY_COLOR_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532;

		/// <summary>
		/// [GL] Value of GL_UNSIGNED_IDENTITY_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int UNSIGNED_IDENTITY_NV = 0x8536;

		/// <summary>
		/// [GL] Value of GL_UNSIGNED_INVERT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int UNSIGNED_INVERT_NV = 0x8537;

		/// <summary>
		/// [GL] Value of GL_EXPAND_NORMAL_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int EXPAND_NORMAL_NV = 0x8538;

		/// <summary>
		/// [GL] Value of GL_EXPAND_NEGATE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int EXPAND_NEGATE_NV = 0x8539;

		/// <summary>
		/// [GL] Value of GL_HALF_BIAS_NORMAL_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int HALF_BIAS_NORMAL_NV = 0x853A;

		/// <summary>
		/// [GL] Value of GL_HALF_BIAS_NEGATE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int HALF_BIAS_NEGATE_NV = 0x853B;

		/// <summary>
		/// [GL] Value of GL_SIGNED_IDENTITY_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SIGNED_IDENTITY_NV = 0x853C;

		/// <summary>
		/// [GL] Value of GL_SIGNED_NEGATE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SIGNED_NEGATE_NV = 0x853D;

		/// <summary>
		/// [GL] Value of GL_SCALE_BY_TWO_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SCALE_BY_TWO_NV = 0x853E;

		/// <summary>
		/// [GL] Value of GL_SCALE_BY_FOUR_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SCALE_BY_FOUR_NV = 0x853F;

		/// <summary>
		/// [GL] Value of GL_SCALE_BY_ONE_HALF_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int SCALE_BY_ONE_HALF_NV = 0x8540;

		/// <summary>
		/// [GL] Value of GL_BIAS_BY_NEGATIVE_ONE_HALF_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541;

		/// <summary>
		/// [GL] Value of GL_COMBINER_INPUT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_INPUT_NV = 0x8542;

		/// <summary>
		/// [GL] Value of GL_COMBINER_MAPPING_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_MAPPING_NV = 0x8543;

		/// <summary>
		/// [GL] Value of GL_COMBINER_COMPONENT_USAGE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_COMPONENT_USAGE_NV = 0x8544;

		/// <summary>
		/// [GL] Value of GL_COMBINER_AB_DOT_PRODUCT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_AB_DOT_PRODUCT_NV = 0x8545;

		/// <summary>
		/// [GL] Value of GL_COMBINER_CD_DOT_PRODUCT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_CD_DOT_PRODUCT_NV = 0x8546;

		/// <summary>
		/// [GL] Value of GL_COMBINER_MUX_SUM_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_MUX_SUM_NV = 0x8547;

		/// <summary>
		/// [GL] Value of GL_COMBINER_SCALE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_SCALE_NV = 0x8548;

		/// <summary>
		/// [GL] Value of GL_COMBINER_BIAS_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_BIAS_NV = 0x8549;

		/// <summary>
		/// [GL] Value of GL_COMBINER_AB_OUTPUT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_AB_OUTPUT_NV = 0x854A;

		/// <summary>
		/// [GL] Value of GL_COMBINER_CD_OUTPUT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_CD_OUTPUT_NV = 0x854B;

		/// <summary>
		/// [GL] Value of GL_COMBINER_SUM_OUTPUT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER_SUM_OUTPUT_NV = 0x854C;

		/// <summary>
		/// [GL] Value of GL_MAX_GENERAL_COMBINERS_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int MAX_GENERAL_COMBINERS_NV = 0x854D;

		/// <summary>
		/// [GL] Value of GL_NUM_GENERAL_COMBINERS_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int NUM_GENERAL_COMBINERS_NV = 0x854E;

		/// <summary>
		/// [GL] Value of GL_COLOR_SUM_CLAMP_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COLOR_SUM_CLAMP_NV = 0x854F;

		/// <summary>
		/// [GL] Value of GL_COMBINER0_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER0_NV = 0x8550;

		/// <summary>
		/// [GL] Value of GL_COMBINER1_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER1_NV = 0x8551;

		/// <summary>
		/// [GL] Value of GL_COMBINER2_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER2_NV = 0x8552;

		/// <summary>
		/// [GL] Value of GL_COMBINER3_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER3_NV = 0x8553;

		/// <summary>
		/// [GL] Value of GL_COMBINER4_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER4_NV = 0x8554;

		/// <summary>
		/// [GL] Value of GL_COMBINER5_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER5_NV = 0x8555;

		/// <summary>
		/// [GL] Value of GL_COMBINER6_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER6_NV = 0x8556;

		/// <summary>
		/// [GL] Value of GL_COMBINER7_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_register_combiners")]
		public const int COMBINER7_NV = 0x8557;

		/// <summary>
		/// [GL] glCombinerParameterfvNV: Binding for glCombinerParameterfvNV.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:float[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerParameterNV(int pname, float[] @params)
		{
			unsafe {
				fixed (float* p_params = @params)
				{
					Debug.Assert(Delegates.pglCombinerParameterfvNV != null, "pglCombinerParameterfvNV not implemented");
					Delegates.pglCombinerParameterfvNV(pname, p_params);
					LogCommand("glCombinerParameterfvNV", null, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glCombinerParameterfNV: Binding for glCombinerParameterfNV.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:float"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerParameterNV(int pname, float param)
		{
			Debug.Assert(Delegates.pglCombinerParameterfNV != null, "pglCombinerParameterfNV not implemented");
			Delegates.pglCombinerParameterfNV(pname, param);
			LogCommand("glCombinerParameterfNV", null, pname, param			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glCombinerParameterivNV: Binding for glCombinerParameterivNV.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerParameterNV(int pname, int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglCombinerParameterivNV != null, "pglCombinerParameterivNV not implemented");
					Delegates.pglCombinerParameterivNV(pname, p_params);
					LogCommand("glCombinerParameterivNV", null, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glCombinerParameteriNV: Binding for glCombinerParameteriNV.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:int"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerParameterNV(int pname, int param)
		{
			Debug.Assert(Delegates.pglCombinerParameteriNV != null, "pglCombinerParameteriNV not implemented");
			Delegates.pglCombinerParameteriNV(pname, param);
			LogCommand("glCombinerParameteriNV", null, pname, param			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glCombinerInputNV: Binding for glCombinerInputNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="input">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="mapping">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="componentUsage">
		/// A <see cref="T:int"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerInputNV(int stage, int portion, int variable, int input, int mapping, int componentUsage)
		{
			Debug.Assert(Delegates.pglCombinerInputNV != null, "pglCombinerInputNV not implemented");
			Delegates.pglCombinerInputNV(stage, portion, variable, input, mapping, componentUsage);
			LogCommand("glCombinerInputNV", null, stage, portion, variable, input, mapping, componentUsage			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glCombinerOutputNV: Binding for glCombinerOutputNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="abOutput">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="cdOutput">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="sumOutput">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="scale">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="bias">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="abDotProduct">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="cdDotProduct">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="muxSum">
		/// A <see cref="T:bool"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void CombinerOutputNV(int stage, int portion, int abOutput, int cdOutput, int sumOutput, int scale, int bias, bool abDotProduct, bool cdDotProduct, bool muxSum)
		{
			Debug.Assert(Delegates.pglCombinerOutputNV != null, "pglCombinerOutputNV not implemented");
			Delegates.pglCombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum);
			LogCommand("glCombinerOutputNV", null, stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glFinalCombinerInputNV: Binding for glFinalCombinerInputNV.
		/// </summary>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="input">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="mapping">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="componentUsage">
		/// A <see cref="T:int"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void FinalCombinerInputNV(int variable, int input, int mapping, int componentUsage)
		{
			Debug.Assert(Delegates.pglFinalCombinerInputNV != null, "pglFinalCombinerInputNV not implemented");
			Delegates.pglFinalCombinerInputNV(variable, input, mapping, componentUsage);
			LogCommand("glFinalCombinerInputNV", null, variable, input, mapping, componentUsage			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetCombinerInputParameterfvNV: Binding for glGetCombinerInputParameterfvNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:float[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetCombinerInputParameterNV(int stage, int portion, int variable, int pname, [Out] float[] @params)
		{
			unsafe {
				fixed (float* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetCombinerInputParameterfvNV != null, "pglGetCombinerInputParameterfvNV not implemented");
					Delegates.pglGetCombinerInputParameterfvNV(stage, portion, variable, pname, p_params);
					LogCommand("glGetCombinerInputParameterfvNV", null, stage, portion, variable, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetCombinerInputParameterivNV: Binding for glGetCombinerInputParameterivNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetCombinerInputParameterNV(int stage, int portion, int variable, int pname, [Out] int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetCombinerInputParameterivNV != null, "pglGetCombinerInputParameterivNV not implemented");
					Delegates.pglGetCombinerInputParameterivNV(stage, portion, variable, pname, p_params);
					LogCommand("glGetCombinerInputParameterivNV", null, stage, portion, variable, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetCombinerOutputParameterfvNV: Binding for glGetCombinerOutputParameterfvNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:float[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetCombinerOutputParameterNV(int stage, int portion, int pname, [Out] float[] @params)
		{
			unsafe {
				fixed (float* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetCombinerOutputParameterfvNV != null, "pglGetCombinerOutputParameterfvNV not implemented");
					Delegates.pglGetCombinerOutputParameterfvNV(stage, portion, pname, p_params);
					LogCommand("glGetCombinerOutputParameterfvNV", null, stage, portion, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetCombinerOutputParameterivNV: Binding for glGetCombinerOutputParameterivNV.
		/// </summary>
		/// <param name="stage">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="portion">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetCombinerOutputParameterNV(int stage, int portion, int pname, [Out] int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetCombinerOutputParameterivNV != null, "pglGetCombinerOutputParameterivNV not implemented");
					Delegates.pglGetCombinerOutputParameterivNV(stage, portion, pname, p_params);
					LogCommand("glGetCombinerOutputParameterivNV", null, stage, portion, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetFinalCombinerInputParameterfvNV: Binding for glGetFinalCombinerInputParameterfvNV.
		/// </summary>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:float[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetFinalCombinerInputParameterNV(int variable, int pname, [Out] float[] @params)
		{
			unsafe {
				fixed (float* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetFinalCombinerInputParameterfvNV != null, "pglGetFinalCombinerInputParameterfvNV not implemented");
					Delegates.pglGetFinalCombinerInputParameterfvNV(variable, pname, p_params);
					LogCommand("glGetFinalCombinerInputParameterfvNV", null, variable, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetFinalCombinerInputParameterivNV: Binding for glGetFinalCombinerInputParameterivNV.
		/// </summary>
		/// <param name="variable">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_register_combiners")]
		public static void GetFinalCombinerInputParameterNV(int variable, int pname, [Out] int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetFinalCombinerInputParameterivNV != null, "pglGetFinalCombinerInputParameterivNV not implemented");
					Delegates.pglGetFinalCombinerInputParameterivNV(variable, pname, p_params);
					LogCommand("glGetFinalCombinerInputParameterivNV", null, variable, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		internal static unsafe partial class Delegates
		{
			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerParameterfvNV(int pname, float* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerParameterfvNV pglCombinerParameterfvNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerParameterfNV(int pname, float param);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerParameterfNV pglCombinerParameterfNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerParameterivNV(int pname, int* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerParameterivNV pglCombinerParameterivNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerParameteriNV(int pname, int param);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerParameteriNV pglCombinerParameteriNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerInputNV(int stage, int portion, int variable, int input, int mapping, int componentUsage);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerInputNV pglCombinerInputNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCombinerOutputNV(int stage, int portion, int abOutput, int cdOutput, int sumOutput, int scale, int bias, [MarshalAs(UnmanagedType.I1)] bool abDotProduct, [MarshalAs(UnmanagedType.I1)] bool cdDotProduct, [MarshalAs(UnmanagedType.I1)] bool muxSum);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glCombinerOutputNV pglCombinerOutputNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glFinalCombinerInputNV(int variable, int input, int mapping, int componentUsage);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glFinalCombinerInputNV pglFinalCombinerInputNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetCombinerInputParameterfvNV(int stage, int portion, int variable, int pname, float* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetCombinerInputParameterfvNV pglGetCombinerInputParameterfvNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetCombinerInputParameterivNV(int stage, int portion, int variable, int pname, int* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetCombinerInputParameterivNV pglGetCombinerInputParameterivNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetCombinerOutputParameterfvNV(int stage, int portion, int pname, float* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetCombinerOutputParameterfvNV pglGetCombinerOutputParameterfvNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetCombinerOutputParameterivNV(int stage, int portion, int pname, int* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetCombinerOutputParameterivNV pglGetCombinerOutputParameterivNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetFinalCombinerInputParameterfvNV(int variable, int pname, float* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetFinalCombinerInputParameterfvNV pglGetFinalCombinerInputParameterfvNV;

			[RequiredByFeature("GL_NV_register_combiners")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetFinalCombinerInputParameterivNV(int variable, int pname, int* @params);

			[RequiredByFeature("GL_NV_register_combiners")]
			[ThreadStatic]
			internal static glGetFinalCombinerInputParameterivNV pglGetFinalCombinerInputParameterivNV;

		}
	}

}
